A good answer might be:

  1. How many class definitions are there in this program?
    • Two: HelloObject, and HelloTester
  2. How many objects are created when the program runs?
    • Just one, created by the statement:
      HelloObject anObject = new HelloObject();
    • The other class definition, HelloTester, is used to contain the static main() method. No object is constructed from it.

Testing Class

The Java interpreter starts a program by looking for a static main() method inside of the HelloTester.class file. Since the method is static the interpreter can run it without first constructing an object.

It is convenient to have a separate class that serves no other purpose than to contain the main() method. This testing class is used to start things running. Usually its main() constructs objects of various classes and calls their methods. These objects do the real work of the program.

The source file for the program is named HelloTester.java. When you compile the file, the compiler outputs two separate files of bytecodes:

C:\chap30>javac HelloTester.java
  compiling: HelloTester.java

C:\chap30>dir

11/13/98  10:07p                   257 HelloTester.java
11/13/98  10:40p                   476 HelloObject.class
11/13/98  10:40p                   373 HelloTester.class
               3 File(s)          1,106 bytes

To run the program type:

java HelloTester

The Java interpreter finds the main() method in the HelloTester class and starts it running.

QUESTION 10:

When the Java interpreter needs the definition HelloObject, where will it be found?